package com.ruoyi.fitsculpt.domain;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.ruoyi.common.core.domain.BaseEntity;
import com.baomidou.mybatisplus.annotation.TableField;

/**
 * 用户基础信息对象 easyfit_users
 *
 * @author metaee
 * @date 2025-02-27
 */
@ApiModel("用户基础信息对象")
public class EasyfitUsers extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 用户ID
     */
    @ApiModelProperty("用户ID")
    @Excel(name = "用户ID")
    private Long userId;

    /**
     * 微信openid
     */
    @ApiModelProperty("微信openid")
    @Excel(name = "微信openid")
    private String openid;

    /**
     * 微信unionid
     */
    @ApiModelProperty("微信unionid")
    @Excel(name = "微信unionid")
    private String unionid;

    /**
     * 手机号码
     */
    @ApiModelProperty("手机号码")
    @Excel(name = "手机号码")
    private String phone;

    /**
     * 密码哈希
     */
    @ApiModelProperty("密码哈希")
    @Excel(name = "密码哈希")
    private String passwordHash;

    /**
     * 用户昵称
     */
    @ApiModelProperty("用户昵称")
    @Excel(name = "用户昵称")
    private String nickName;

    /**
     * 真实姓名
     */
    @ApiModelProperty("真实姓名")
    @Excel(name = "真实姓名")
    private String realName;

    /**
     * 头像地址
     */
    @ApiModelProperty("头像地址")
    @Excel(name = "头像地址")
    private String avatar;

    /**
     * 邮箱
     */
    @ApiModelProperty("邮箱")
    @Excel(name = "邮箱")
    private String email;

    /**
     * 身份证号
     */
    @ApiModelProperty("身份证号")
    @Excel(name = "身份证号")
    private String idCard;

    /**
     * 是否实名认证（0否 1是）
     */
    @ApiModelProperty("是否实名认证")
    @Excel(name = "是否实名认证", readConverterExp = "0=否,1=是")
    private String isVerified;

    /**
     * 最后登录IP
     */
    @ApiModelProperty("最后登录IP")
    @Excel(name = "最后登录IP")
    private String lastLoginIp;

    /**
     * 最后登录时间
     */
    @ApiModelProperty("最后登录时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "最后登录时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date lastLoginTime;

    /**
     * 账号状态（0正常 1禁用）
     */
    @ApiModelProperty("账号状态")
    @Excel(name = "账号状态", readConverterExp = "0=正常,1=禁用")
    private String status;

    /**
     * 性别（0未知 1男 2女）
     */
    @ApiModelProperty("性别")
    @Excel(name = "性别", readConverterExp = "0=未知,1=男,2=女")
    private String gender;

    /** 用户的目标列表 */
    @TableField(exist = false)
    private List<EasyfitUserGoals> goals;

    /** 用户的运动计划列表 */
    @TableField(exist = false)
    private List<EasyfitExercisePlans> exercisePlans;

    /** 用户的饮食计划列表 */
    @TableField(exist = false)
    private List<EasyfitDietPlans> dietPlans;

    /** 用户的身体数据记录列表 */
    @TableField(exist = false)
    private List<EasyfitBodyStats> bodyStats;

    /** 最新的身体数据记录 */
    @TableField(exist = false)
    private EasyfitBodyStats latestBodyStats;

    /** 当前进行中的目标 */
    @TableField(exist = false)
    private EasyfitUserGoals currentGoal;

    /** 当前进行中的运动计划 */
    @TableField(exist = false)
    private EasyfitExercisePlans currentExercisePlan;

    /** 当前进行中的饮食计划 */
    @TableField(exist = false)
    private EasyfitDietPlans currentDietPlan;

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getOpenid() {
        return openid;
    }

    public void setOpenid(String openid) {
        this.openid = openid;
    }

    public String getUnionid() {
        return unionid;
    }

    public void setUnionid(String unionid) {
        this.unionid = unionid;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getPasswordHash() {
        return passwordHash;
    }

    public void setPasswordHash(String passwordHash) {
        this.passwordHash = passwordHash;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getRealName() {
        return realName;
    }

    public void setRealName(String realName) {
        this.realName = realName;
    }

    public String getAvatar() {
        return avatar;
    }

    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public String getIsVerified() {
        return isVerified;
    }

    public void setIsVerified(String isVerified) {
        this.isVerified = isVerified;
    }

    public String getLastLoginIp() {
        return lastLoginIp;
    }

    public void setLastLoginIp(String lastLoginIp) {
        this.lastLoginIp = lastLoginIp;
    }

    public Date getLastLoginTime() {
        return lastLoginTime;
    }

    public void setLastLoginTime(Date lastLoginTime) {
        this.lastLoginTime = lastLoginTime;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public List<EasyfitUserGoals> getGoals() {
        return goals;
    }

    public void setGoals(List<EasyfitUserGoals> goals) {
        this.goals = goals;
    }

    public List<EasyfitExercisePlans> getExercisePlans() {
        return exercisePlans;
    }

    public void setExercisePlans(List<EasyfitExercisePlans> exercisePlans) {
        this.exercisePlans = exercisePlans;
    }

    public List<EasyfitDietPlans> getDietPlans() {
        return dietPlans;
    }

    public void setDietPlans(List<EasyfitDietPlans> dietPlans) {
        this.dietPlans = dietPlans;
    }

    public List<EasyfitBodyStats> getBodyStats() {
        return bodyStats;
    }

    public void setBodyStats(List<EasyfitBodyStats> bodyStats) {
        this.bodyStats = bodyStats;
    }

    public EasyfitBodyStats getLatestBodyStats() {
        return latestBodyStats;
    }

    public void setLatestBodyStats(EasyfitBodyStats latestBodyStats) {
        this.latestBodyStats = latestBodyStats;
    }

    public EasyfitUserGoals getCurrentGoal() {
        return currentGoal;
    }

    public void setCurrentGoal(EasyfitUserGoals currentGoal) {
        this.currentGoal = currentGoal;
    }

    public EasyfitExercisePlans getCurrentExercisePlan() {
        return currentExercisePlan;
    }

    public void setCurrentExercisePlan(EasyfitExercisePlans currentExercisePlan) {
        this.currentExercisePlan = currentExercisePlan;
    }

    public EasyfitDietPlans getCurrentDietPlan() {
        return currentDietPlan;
    }

    public void setCurrentDietPlan(EasyfitDietPlans currentDietPlan) {
        this.currentDietPlan = currentDietPlan;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("userId", getUserId())
                .append("openid", getOpenid())
                .append("unionid", getUnionid())
                .append("phone", getPhone())
                .append("passwordHash", getPasswordHash())
                .append("nickName", getNickName())
                .append("realName", getRealName())
                .append("avatar", getAvatar())
                .append("email", getEmail())
                .append("idCard", getIdCard())
                .append("isVerified", getIsVerified())
                .append("lastLoginIp", getLastLoginIp())
                .append("lastLoginTime", getLastLoginTime())
                .append("status", getStatus())
                .append("goals", getGoals())
                .append("exercisePlans", getExercisePlans())
                .append("dietPlans", getDietPlans())
                .append("bodyStats", getBodyStats())
                .append("latestBodyStats", getLatestBodyStats())
                .append("currentGoal", getCurrentGoal())
                .append("currentExercisePlan", getCurrentExercisePlan())
                .append("currentDietPlan", getCurrentDietPlan())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .append("remark", getRemark())
                .toString();
    }
}
